package json_util

import "encoding/json"

// 序列化成字符串
func ToString(obj any) string {
	// 序列化对象
	jsonBytes, err := json.Marshal(obj)
	if err != nil {
		panic(err)
	}

	// 转换成字符串
	jsonStr := string(jsonBytes)

	return jsonStr
}

// 解析 JSON 字符串
func FromString(jsonStr string, obj any) {
	jsonBytes := []byte(jsonStr)

	FromBytes(jsonBytes, obj)
}

func FromStringAsMap(jsonStr string) map[string]any {
	result := map[string]any{}
	FromString(jsonStr, &result)

	return result
}

func FromStringAsArray(jsonStr string) []map[string]any {
	result := []map[string]any{}
	FromString(jsonStr, &result)

	return result
}

// 解析 JSON 字符串
func FromBytes(jsonBytes []byte, obj any) {
	// JSON反序列化
	err := json.Unmarshal(jsonBytes, &obj)

	if err != nil {
		panic(err)
	}
}

func FromBytesAsMap(jsonBytes []byte) map[string]any {
	result := map[string]any{}
	FromBytes(jsonBytes, &result)

	return result
}

func FromBytesAsArray(jsonBytes []byte) []map[string]any {
	result := []map[string]any{}
	FromBytes(jsonBytes, &result)

	return result
}
